Проверка авторизации
В некоторых случаях бывает необходимо удостовериться в том, что у пользователя, который пытается получить доступ к функциям или данным, есть необходимые права для этого. Например, расширение может предоставлять удаленный интерфейс, позволяющий управлять конфиденциальными данными. Смотрите в качестве примера “Упражнение 3. Сущности и авторизация Plesk”.
В таких случаях можно использовать метод pm_Auth::isValidCredentials().
Следующий пример показывает, как выполняется авторизация с помощью параметров доступа, полученных из заголовка запроса HTTP.
namespace PleskExt\Example\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class BasicAuth
{
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
{
if ($request->hasHeader('Authorization')) {
list($login, $password) = $this->parseAuthorizationHeader($request->getHeaderLine('Authorization'));
if ($login && $password) {
if (\pm_Auth::isValidCredentials($login, $password)) {
return $next($request->withAttribute('login', $login), $response);
}
}
}
return $next($request, $response);
}
private static function parseAuthorizationHeader($header)
{
if (strpos($header, 'Basic') !== 0) {
return [null, null];
}
$parsed = explode(':', base64_decode(substr($header, 6)), 2);
if (count($parsed) < 2) {
return [null, null];
}
return $parsed;
}
}
Вот еще один пример.